#ifndef PARTGUI_VIEWPROVIDERPATHCAMERA_H_H_H_H_H
#define PARTGUI_VIEWPROVIDERPATHCAMERA_H_H_H_H_H
#include "part/ViewProvider.h"
#include <App/DocumentObserver.h>
#include "PropertyLinks.h"
namespace PartGui
{


class ViewProviderPathCamera : public PartGui::ViewProviderPart,public App::DocumentObserver
{
	PROPERTY_HEADER(PartGui::ViewProviderPathCamera);
public:
	ViewProviderPathCamera(void);
	virtual~ViewProviderPathCamera(void);
public:

	App::PropertyFloat  Animationlength;	
	 App::PropertyEnumeration CameraAnimationPath;
	 //App::PropertyLinkList    pCurLinkList;

	 

protected:

	 void attach(App::DocumentObject *);

	 void onChanged(const App::Property* prop);

	 void updateData(const App::Property*);

	 void updateCurContainter(bool isAttach);

	 void removeCurve(App::DocumentObject* obj);

    bool setEdit(int ModNum);
	void unsetEdit(int ModNum);


public:

	App::DocumentObject* getCurrentCurve(void){return currentCurve;}
	float    getTotalTime(void){return mTotalTime;}
	
private:

	/** Checks if a new document was created */
	void slotCreatedDocument(const App::Document& Doc);
	/** Checks if the given document is about to be closed */
	void slotDeletedDocument(const App::Document& Doc);
	/** Checks if a new object was added. */
	void slotCreatedObject(const App::DocumentObject& Obj);
	/** Checks if the given object is about to be removed. */
	void slotDeletedObject(const App::DocumentObject& Obj);
	/** The property of an observed object has changed */
	void slotChangedObject(const App::DocumentObject& Obj, const App::Property& Prop);


protected:
	std::vector<std::string> charCurveNameList;

	App::DocumentObject*                currentCurve;

	float                   mTotalTime;

};
}

#endif